package cn.kgc.service.impl;

import cn.kgc.entity.SmbmsUser;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.kgc.mapper.SmbmsRoleMapper;
import cn.kgc.entity.SmbmsRole;
import cn.kgc.service.SmbmsRoleService;
import com.github.yulichang.toolkit.JoinWrappers;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.springframework.stereotype.Service;
import lombok.extern.slf4j.Slf4j;

/**
 * @author example
 * @version 1.0
 */
@Slf4j
@Service("smbmsRoleService")
@SuppressWarnings("all")
public class SmbmsRoleServiceImpl extends ServiceImpl<SmbmsRoleMapper, SmbmsRole> implements SmbmsRoleService {
    @Override
    public SmbmsRole getRoleById(long id) {
        //查询角色表
        MPJLambdaWrapper<SmbmsRole> wrapper = JoinWrappers.lambda(SmbmsRole.class)
                //查询角色表关联的用户表（一个角色对应多个用户）
                .selectCollection(SmbmsUser.class, SmbmsRole::getSmbmsUsers)
                //查询所有角色表中的信息
                .selectAll(SmbmsRole.class)
                //查询所有用户表中的信息
                .selectAll(SmbmsUser.class)
                //使用左外链接查询（角色表和用户表作外链接查询）
                .leftJoin(SmbmsUser.class, SmbmsUser::getUserrole, SmbmsRole::getId)
                //根据角色编号进行查询
                .eq(SmbmsRole::getId, id);
        // 相当于:
        // select role.*,user.* from smbms_role role left join  smbms_user user
        // on role.id=user.userrole
        // where role.id=1
        return getBaseMapper().selectJoinOne(wrapper);
    }
}
